<html>
<head><meta charset="utf-8"><title>design meeting 2019-11-01 · t-compiler · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/index.html">t-compiler</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html">design meeting 2019-11-01</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="179622687"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179622687" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179622687">(Nov 01 2019 at 12:50)</a>:</h4>
<p>just a reminder to <span class="user-group-mention" data-user-group-id="897">@T-compiler/meeting</span> : we will be having our first design meeting for this four week cycle in 1 hour and 10 minutes.</p>



<a name="179622721"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179622721" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179622721">(Nov 01 2019 at 12:51)</a>:</h4>
<p>this week's topic is "incremental dep-graph storage"; see <a href="https://github.com/rust-lang/compiler-team/issues/199" target="_blank" title="https://github.com/rust-lang/compiler-team/issues/199">rust-lang/compiler-team#199</a></p>



<a name="179622861"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179622861" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179622861">(Nov 01 2019 at 12:53)</a>:</h4>
<p>and also, there has been pre-meeting discussion over the last week over in a parallel <a href="#narrow/stream/131828-t-compiler/topic/dep-graph.20design.20meeting.20prep/near/179313679" title="#narrow/stream/131828-t-compiler/topic/dep-graph.20design.20meeting.20prep/near/179313679">zulip topic</a>. (My hope is that we will <em>start</em> today's meeting by summarizing any points that arose there or elsehwere, rather than presuming that everyone's already read through that thread or others.)</p>



<a name="179623639"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179623639" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179623639">(Nov 01 2019 at 13:02)</a>:</h4>
<p>notes from that parallel zulip topic were accumulated in this <a href="https://hackmd.io/9GgAXPtrRSiwBPsI6saa_A" target="_blank" title="https://hackmd.io/9GgAXPtrRSiwBPsI6saa_A">hackmd document</a></p>



<a name="179626548"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179626548" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179626548">(Nov 01 2019 at 13:40)</a>:</h4>
<blockquote>
<p>and also, there has been pre-meeting discussion over the last week over in a parallel <a href="#narrow/stream/131828-t-compiler/topic/dep-graph.20design.20meeting.20prep/near/179313679" title="#narrow/stream/131828-t-compiler/topic/dep-graph.20design.20meeting.20prep/near/179313679">zulip topic</a>. (My hope is that we will <em>start</em> today's meeting by summarizing any points that arose there or elsehwere, rather than presuming that everyone's already read through that thread or others.)</p>
</blockquote>
<p>(the hope is indeed that the hackmd suffices :)</p>



<a name="179626587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179626587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179626587">(Nov 01 2019 at 13:41)</a>:</h4>
<p>One thing I would add is that you may want to refresh your memory on <a href="https://rust-lang.github.io/compiler-team/minutes/design-meeting/2019-10-11-DepGraph-persistence-PR62038/" target="_blank" title="https://rust-lang.github.io/compiler-team/minutes/design-meeting/2019-10-11-DepGraph-persistence-PR62038/">the design meeting from 2019-10-11</a>, which discussed <a href="https://github.com/rust-lang/rust/issues/62038" target="_blank" title="https://github.com/rust-lang/rust/issues/62038">#62038</a> -- I know I do.</p>



<a name="179626621"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179626621" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179626621">(Nov 01 2019 at 13:41)</a>:</h4>
<p><a href="#narrow/stream/131828-t-compiler/topic/design.20meeting.202019-10-11" title="#narrow/stream/131828-t-compiler/topic/design.20meeting.202019-10-11">zulip stream for aforementioned design meeting</a></p>



<a name="179628143"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628143" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628143">(Nov 01 2019 at 14:01)</a>:</h4>
<p>Shall we start the meeting?</p>



<a name="179628167"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628167" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628167">(Nov 01 2019 at 14:01)</a>:</h4>
<p>Hey <span class="user-group-mention" data-user-group-id="897">@T-compiler/meeting</span> -- design meeting starting now! Add a <span aria-label="wave" class="emoji emoji-1f44b" role="img" title="wave">:wave:</span> emoji to show you're here :)</p>



<a name="179628172"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628172" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628172">(Nov 01 2019 at 14:01)</a>:</h4>
<h1>Announcements</h1>



<a name="179628253"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628253" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628253">(Nov 01 2019 at 14:02)</a>:</h4>
<ul>
<li>We just posted a <a href="https://blog.rust-lang.org/2019/11/01/nll-hard-errors.html" target="_blank" title="https://blog.rust-lang.org/2019/11/01/nll-hard-errors.html">blog post about completing the transition to the new borrow checker</a></li>
</ul>



<a name="179628319"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628319" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628319">(Nov 01 2019 at 14:03)</a>:</h4>
<p>thanks to <span class="user-mention" data-user-id="116118">@Matthew Jasper</span>, <span class="user-mention" data-user-id="126931">@centril</span>, and <span class="user-mention" data-user-id="116122">@simulacrum</span> for pushing that forward (did I forget anyone?)</p>



<a name="179628343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628343">(Nov 01 2019 at 14:03)</a>:</h4>
<p>also cc <span class="user-mention" data-user-id="119009">@eddyb</span> since apparently they don't get notifications?? (they're in the user group, for sure...)</p>



<a name="179628358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628358">(Nov 01 2019 at 14:03)</a>:</h4>
<p>oh wait, they waved :)</p>



<a name="179628522"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628522" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628522">(Nov 01 2019 at 14:05)</a>:</h4>
<p>OK, let's get started I guess :)</p>



<a name="179628539"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628539" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628539">(Nov 01 2019 at 14:05)</a>:</h4>
<p>I guess we should start by setting the context a bit?</p>



<a name="179628653"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628653" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628653">(Nov 01 2019 at 14:06)</a>:</h4>
<p>Last time on <a href="https://rust-lang.github.io/compiler-team/minutes/design-meeting/2019-10-11-DepGraph-persistence-PR62038/" target="_blank" title="https://rust-lang.github.io/compiler-team/minutes/design-meeting/2019-10-11-DepGraph-persistence-PR62038/">2019-10-11</a> we discussed <span class="user-mention" data-user-id="116466">@Zoxc</span>'s PR that modified how we handle the dep-graph. Whereas today we read in the old dep-graph and then copy bits of it to create a new one, that PR had us modify the graph in place and then write out the final result.</p>



<a name="179628685"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628685" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628685">(Nov 01 2019 at 14:07)</a>:</h4>
<p>That was a mid-way step towards an end-goal in which we load the previous dep-graph into memory but then never modify it all -- instead we write those changes out to disk in a streaming fashion, so that we only have to keep one copy in memory at a time</p>



<a name="179628690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628690">(Nov 01 2019 at 14:07)</a>:</h4>
<p>Is that accurate, <span class="user-mention" data-user-id="116466">@Zoxc</span> ?</p>



<a name="179628699"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628699" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628699">(Nov 01 2019 at 14:07)</a>:</h4>
<p>(Good way for me to check myself...)</p>



<a name="179628719"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628719" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628719">(Nov 01 2019 at 14:07)</a>:</h4>
<p>Seem accurate enough</p>



<a name="179628800"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628800" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628800">(Nov 01 2019 at 14:08)</a>:</h4>
<p>(One quick question -- did we discuss "GC" when talking about the previous PR?)</p>



<a name="179628832"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628832" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628832">(Nov 01 2019 at 14:08)</a>:</h4>
<p>No.</p>



<a name="179628844"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628844" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628844">(Nov 01 2019 at 14:08)</a>:</h4>
<p>So, we created this <a href="https://hackmd.io/9GgAXPtrRSiwBPsI6saa_A#What-does-the-on-disk-format-look-like" target="_blank" title="https://hackmd.io/9GgAXPtrRSiwBPsI6saa_A#What-does-the-on-disk-format-look-like">hackmd document</a> with various notes and questiosn -- I think probably the best way to start is to walk through the proposed design and try to answer some of the questions within</p>



<a name="179628863"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628863" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628863">(Nov 01 2019 at 14:09)</a>:</h4>
<p>And the GC in this PR is for the key-value store used to store the graph. There's no GC on the graph itself.</p>



<a name="179628872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628872">(Nov 01 2019 at 14:09)</a>:</h4>
<p>ok, let's start with a basic question</p>



<a name="179628890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628890">(Nov 01 2019 at 14:09)</a>:</h4>
<h1>What does the on-disk format look like?</h1>



<a name="179628904"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628904" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628904">(Nov 01 2019 at 14:09)</a>:</h4>
<p>In particular, how do we store the graph <em>today</em>, and how does it change in this PR?</p>



<a name="179628969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179628969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179628969">(Nov 01 2019 at 14:10)</a>:</h4>
<p>(Also, i'm going to be updating the design doc live with links to key comments and things, feel free to add things if you like, or use <span aria-label="point up" class="emoji emoji-1f446" role="img" title="point up">:point_up:</span> to draw attention)</p>



<a name="179629010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629010">(Nov 01 2019 at 14:11)</a>:</h4>
<p>this is how the graph is stored today: <a href="https://github.com/rust-lang/rust/blob/master/src/librustc/dep_graph/serialized.rs#L13-L26" target="_blank" title="https://github.com/rust-lang/rust/blob/master/src/librustc/dep_graph/serialized.rs#L13-L26">https://github.com/rust-lang/rust/blob/master/src/librustc/dep_graph/serialized.rs#L13-L26</a></p>



<a name="179629021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629021">(Nov 01 2019 at 14:11)</a>:</h4>
<p>Yeah, so there's one big file that we encode automatically</p>



<a name="179629046"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629046" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629046">(Nov 01 2019 at 14:11)</a>:</h4>
<p>The on disk format is basically just a list of <code>Action</code> here: <a href="https://github.com/rust-lang/rust/blob/9f268ad2f5009213d5f33fea02d359536cc89cec/src/librustc/dep_graph/serialized.rs#L340" target="_blank" title="https://github.com/rust-lang/rust/blob/9f268ad2f5009213d5f33fea02d359536cc89cec/src/librustc/dep_graph/serialized.rs#L340">https://github.com/rust-lang/rust/blob/9f268ad2f5009213d5f33fea02d359536cc89cec/src/librustc/dep_graph/serialized.rs#L340</a></p>
<p>It's basically just a list of the changes, and when rustc runs, it appends more to the dep graph file.</p>



<a name="179629108"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629108" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629108">(Nov 01 2019 at 14:12)</a>:</h4>
<p>so when rustc starts, we read in all the actions to start</p>



<a name="179629115"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629115" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629115">(Nov 01 2019 at 14:12)</a>:</h4>
<p>that's "loading" the dep-graph?</p>



<a name="179629132"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629132" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629132">(Nov 01 2019 at 14:12)</a>:</h4>
<p>and presumably if a node is overwritten, we'll create it twice</p>



<a name="179629140"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629140" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629140">(Nov 01 2019 at 14:12)</a>:</h4>
<p>Yeah, we apply all the actions to an empty dep graph basically.</p>



<a name="179629175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629175">(Nov 01 2019 at 14:13)</a>:</h4>
<p>i.e., if we have a node in the dep-graph like <code>A -&gt; [B, C]</code> and it gets overwritten with <code>A -&gt; [D, E]</code>, we'll first create <code>A -&gt; [B, C]</code> and then trash that and create <code>A -&gt; [D, E]</code> to replace it?</p>



<a name="179629187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629187">(Nov 01 2019 at 14:13)</a>:</h4>
<p>Yeah.</p>



<a name="179629218"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629218" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629218">(Nov 01 2019 at 14:14)</a>:</h4>
<p>The GC also does a similar thing where it notes down what was overwritten.</p>



<a name="179629264"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629264" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629264">(Nov 01 2019 at 14:14)</a>:</h4>
<p>(OK, and this in turn explains why you changed the in-memory format to be a <code>Box&lt;[Index]&gt;</code>, but we'll get to that)</p>



<a name="179629277"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629277" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629277">(Nov 01 2019 at 14:14)</a>:</h4>
<p>One question I have, maybe dumb -- are we able to do this loading in parallel?</p>



<a name="179629311"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629311" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629311">(Nov 01 2019 at 14:14)</a>:</h4>
<p>It happens in the background thread, so yes/no?</p>



<a name="179629346"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629346" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629346">(Nov 01 2019 at 14:15)</a>:</h4>
<p>do we start the background thread and then ensure that it has completed by the time we enter the "incremental" phase?</p>



<a name="179629354"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629354" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629354">(Nov 01 2019 at 14:15)</a>:</h4>
<p>that does sound a bit wasteful. do we allocate those slices individually?</p>



<a name="179629474"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629474" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629474">(Nov 01 2019 at 14:16)</a>:</h4>
<p>They're allocated individually.</p>



<a name="179629493"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629493" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629493">(Nov 01 2019 at 14:16)</a>:</h4>
<p>I guess maybe we should discuss the in-memory format just a bit :) topics kind of bleed in together. Just for context (and to check my understanding), currently we store all edges in one big vector, and how each node we store a pair of indices into that vector</p>



<a name="179629515"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629515" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629515">(Nov 01 2019 at 14:17)</a>:</h4>
<p>so </p>
<div class="codehilite"><pre><span></span><span class="n">edge_list_indices</span>: <span class="nc">IndexVec</span><span class="o">&lt;</span><span class="n">SerializedDepNodeIndex</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">u32</span><span class="p">,</span><span class="w"> </span><span class="kt">u32</span><span class="p">)</span><span class="o">&gt;</span><span class="p">,</span><span class="w"></span>
<span class="n">edge_list_data</span>: <span class="nb">Vec</span><span class="o">&lt;</span><span class="n">SerializedDepNodeIndex</span><span class="o">&gt;</span><span class="p">,</span><span class="w"></span>
</pre></div>



<a name="179629522"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629522" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629522">(Nov 01 2019 at 14:17)</a>:</h4>
<p>but this is hard to "update"</p>



<a name="179629537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629537">(Nov 01 2019 at 14:17)</a>:</h4>
<p>because to remove a node from the middle you'd have to shift over the elements etc etc</p>



<a name="179629547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629547">(Nov 01 2019 at 14:17)</a>:</h4>
<p>so instead in the PR we are using</p>



<a name="179629561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629561">(Nov 01 2019 at 14:17)</a>:</h4>
<div class="codehilite"><pre><span></span><span class="n">edges</span>: <span class="nc">IndexVec</span><span class="o">&lt;</span><span class="n">DepNodeIndex</span><span class="p">,</span><span class="w"> </span><span class="nb">Option</span><span class="o">&lt;</span><span class="nb">Box</span><span class="o">&lt;</span><span class="p">[</span><span class="n">DepNodeIndex</span><span class="p">]</span><span class="o">&gt;&gt;&gt;</span><span class="p">,</span><span class="w"></span>
</pre></div>



<a name="179629631"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629631" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629631">(Nov 01 2019 at 14:18)</a>:</h4>
<p>Are these <code>SerializedDepNodeIndex</code>es large enough to warrant removing them individually rather than all at once at some well specified point in process?</p>



<a name="179629688"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629688" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629688">(Nov 01 2019 at 14:19)</a>:</h4>
<p>in other words</p>



<a name="179629694"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629694" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629694">(Nov 01 2019 at 14:19)</a>:</h4>
<p>i.e. an actual mark and sweep GC kind of thing at the end.</p>



<a name="179629698"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629698" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629698">(Nov 01 2019 at 14:19)</a>:</h4>
<p>how bad is it if we waste some slots in the edge vector?</p>



<a name="179629776"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629776" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629776">(Nov 01 2019 at 14:20)</a>:</h4>
<p>I think this is an interesting question, but it in the grand scheme of things it seems like a relatively minor point -- one best answered by measuring?</p>



<a name="179629788"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629788" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629788">(Nov 01 2019 at 14:20)</a>:</h4>
<p>currently the <code>SerializedDepGraph</code> (which is the in-memory version we are using for the previous dep-graph) is just 4 flat arrays, which is pretty efficient</p>



<a name="179629792"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629792" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629792">(Nov 01 2019 at 14:20)</a>:</h4>
<p>it seems clear that we could optimize this in various ways, or maybe it's good enough as is?</p>



<a name="179629802"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629802" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629802">(Nov 01 2019 at 14:20)</a>:</h4>
<p>Depends on how often we GC.</p>



<a name="179629814"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629814" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629814">(Nov 01 2019 at 14:20)</a>:</h4>
<p>I was hoping to move it to arena allocation</p>



<a name="179629867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629867">(Nov 01 2019 at 14:21)</a>:</h4>
<p>I'm not clear on how we can say "good enough as is" (without data), given that one primary goal here is to reduce peak mem usage?</p>



<a name="179629943"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629943" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629943">(Nov 01 2019 at 14:22)</a>:</h4>
<p>((but maybe "need data" was implicit in niko's comment, esp since they had just said "best answered by measuring" a few lines above...))</p>



<a name="179629967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629967">(Nov 01 2019 at 14:22)</a>:</h4>
<p>That's more of a secondary goal, and it is already massively reduced.</p>



<a name="179629971"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629971" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629971">(Nov 01 2019 at 14:22)</a>:</h4>
<blockquote>
<p>I was hoping to move it to arena allocation</p>
</blockquote>
<p>can you say a bit more what you mean by that?</p>



<a name="179629983"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629983" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629983">(Nov 01 2019 at 14:22)</a>:</h4>
<p>do you mean allocating <code>&amp;'tcx [Index]</code> instead of <code>box&lt;[Index&gt;]</code>?</p>



<a name="179629993"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179629993" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179629993">(Nov 01 2019 at 14:22)</a>:</h4>
<p>Yes</p>



<a name="179630019"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630019" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630019">(Nov 01 2019 at 14:23)</a>:</h4>
<p>The arenas would have to be moved earlier first</p>



<a name="179630024"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630024" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630024">(Nov 01 2019 at 14:23)</a>:</h4>
<p>in that case</p>



<a name="179630034"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630034" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630034">(Nov 01 2019 at 14:23)</a>:</h4>
<p>well, why is that better than the vector?</p>



<a name="179630042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630042">(Nov 01 2019 at 14:23)</a>:</h4>
<p>i.e., it is still wasting the memory for the old slics</p>



<a name="179630058"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630058" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630058">(Nov 01 2019 at 14:23)</a>:</h4>
<p>No allocation slowing down loading, and no memory fragmentation.</p>



<a name="179630107"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630107" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630107">(Nov 01 2019 at 14:24)</a>:</h4>
<p>can the data be read backwards so that overwritten entries can be ignored altogether?</p>



<a name="179630111"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630111" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630111">(Nov 01 2019 at 14:24)</a>:</h4>
<p>We don't waste any memory now. The old boxes are freed during loading</p>



<a name="179630137"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630137" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630137">(Nov 01 2019 at 14:24)</a>:</h4>
<p>There is allocation (of the arena) and there is fragmentation (within the arena) -- but ok, I definitely think this is a "measure" question. I'm willing to believe arena allocation is more efficienct since you're combining in a larger pool.</p>



<a name="179630141"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630141" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630141">(Nov 01 2019 at 14:24)</a>:</h4>
<p>@mw Probably?</p>



<a name="179630174"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630174" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630174">(Nov 01 2019 at 14:25)</a>:</h4>
<p>Can you decode LEB128 backwards? =P</p>



<a name="179630184"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630184" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630184">(Nov 01 2019 at 14:25)</a>:</h4>
<p>ok, time check, it's 10:25</p>



<a name="179630188"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630188" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630188">(Nov 01 2019 at 14:25)</a>:</h4>
<blockquote>
<p>That's more of a secondary goal, and it is already massively reduced.</p>
</blockquote>
<p>This is actually important</p>



<a name="179630194"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630194" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630194">(Nov 01 2019 at 14:26)</a>:</h4>
<p>The mem usage data quoted in the hackmd is based on perf runs from May</p>



<a name="179630300"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630300" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630300">(Nov 01 2019 at 14:27)</a>:</h4>
<blockquote>
<p>Can you decode LEB128 backwards? =P</p>
</blockquote>
<p>We don't have to encode everything in LEB128.</p>



<a name="179630303"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630303" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630303">(Nov 01 2019 at 14:27)</a>:</h4>
<p>yep, it'd be good to get more up-to-date data</p>



<a name="179630315"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630315" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630315">(Nov 01 2019 at 14:27)</a>:</h4>
<blockquote>
<p>ok, time check, it's 10:25</p>
</blockquote>
<p>I was going to suggest that maybe we want to turn to Garbage Collection --</p>



<a name="179630328"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630328" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630328">(Nov 01 2019 at 14:27)</a>:</h4>
<p>if memory reduction is a secondary goal, what is the primary goal then?</p>



<a name="179630333"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630333" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630333">(Nov 01 2019 at 14:27)</a>:</h4>
<p>(it seems like we've identified some interesting thoughts regarding loading, but there were some big questions around GC and I'd like to make sure we talk about it)</p>



<a name="179630383"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630383" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630383">(Nov 01 2019 at 14:28)</a>:</h4>
<blockquote>
<p>if memory reduction is a secondary goal, what is the primary goal then?</p>
</blockquote>
<p>but this is also imp't, maybe I misunderstood what <span class="user-mention" data-user-id="116466">@Zoxc</span> was saying</p>



<a name="179630389"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630389" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630389">(Nov 01 2019 at 14:28)</a>:</h4>
<p>as a data point, I think we got a speedup in <code>proc_macro</code> by not using LEB128 for the RPC stuff</p>



<a name="179630414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630414">(Nov 01 2019 at 14:28)</a>:</h4>
<p>LEB128 is just for saving disk space</p>



<a name="179630438"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630438" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630438">(Nov 01 2019 at 14:28)</a>:</h4>
<p>The goal of the PR is performance, not having to store 2 dep graph in memory is a happy side effect =P</p>



<a name="179630463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630463">(Nov 01 2019 at 14:29)</a>:</h4>
<blockquote>
<p>That's more of a secondary goal, and it is already massively reduced.</p>
</blockquote>
<p>I thought <span class="user-mention" data-user-id="116466">@Zoxc</span> was saying here that the question of memory usage around edges was of secondary imporance</p>



<a name="179630471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630471">(Nov 01 2019 at 14:29)</a>:</h4>
<p>ok, I guess I misunderstood :)</p>



<a name="179630478"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630478" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630478">(Nov 01 2019 at 14:29)</a>:</h4>
<p>it seems though that we don't actually get many perf wins</p>



<a name="179630486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630486">(Nov 01 2019 at 14:29)</a>:</h4>
<p>but perhaps I am misreading the perf results?</p>



<a name="179630511"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630511" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630511">(Nov 01 2019 at 14:30)</a>:</h4>
<p>I was debating if I should have kicked off the meeting with a "goals" discussion --</p>



<a name="179630556"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630556" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630556">(Nov 01 2019 at 14:30)</a>:</h4>
<p>but let's do it now :)</p>



<a name="179630569"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630569" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630569">(Nov 01 2019 at 14:30)</a>:</h4>
<p>persisting the dep-graph already happens "in the background" for cases where LLVM is doing something</p>



<a name="179630690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630690">(Nov 01 2019 at 14:30)</a>:</h4>
<p>at least if I remember correctly and the situation hasn't changed</p>



<a name="179630733"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630733" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630733">(Nov 01 2019 at 14:30)</a>:</h4>
<p>three advantages listed in hackmd doc <a href="https://hackmd.io/9GgAXPtrRSiwBPsI6saa_A?view#Advantages" target="_blank" title="https://hackmd.io/9GgAXPtrRSiwBPsI6saa_A?view#Advantages">here</a></p>



<a name="179630742"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630742" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630742">(Nov 01 2019 at 14:30)</a>:</h4>
<p>yeah</p>



<a name="179630764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630764">(Nov 01 2019 at 14:31)</a>:</h4>
<ol>
<li>Lower Peak Memory Usage</li>
<li>Avoids blocking on writing out dep graph at end of compilation</li>
<li>Avoids work of re-writing unchanged portions of dep-graph</li>
</ol>



<a name="179630781"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630781" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630781">(Nov 01 2019 at 14:31)</a>:</h4>
<p>it seems like the biggest wins come from memory usage (e.g., reduction of peak usage by 30% in some cases), but we do see some performance wins too (I saw measurements that suggested max wins of about 5%?)</p>



<a name="179630827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630827">(Nov 01 2019 at 14:32)</a>:</h4>
<p>but obviously conceptually it is better to avoid having to rewrite the whole graph</p>



<a name="179630833"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630833" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630833">(Nov 01 2019 at 14:32)</a>:</h4>
<p><span class="user-mention" data-user-id="116466">@Zoxc</span> do you agree all of these remain boons acheived in this PR (we can side-step question of primary vs secondary for moment...)</p>



<a name="179630891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630891">(Nov 01 2019 at 14:33)</a>:</h4>
<p>I'd love to have data on 3</p>



<a name="179630913"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630913" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630913">(Nov 01 2019 at 14:33)</a>:</h4>
<p>don't we?</p>



<a name="179630920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630920">(Nov 01 2019 at 14:33)</a>:</h4>
<p>we have runs where literally nothing changes</p>



<a name="179630922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630922">(Nov 01 2019 at 14:34)</a>:</h4>
<p>(perf.rlo doesn't seem to work for me, right :/)</p>



<a name="179630967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630967">(Nov 01 2019 at 14:34)</a>:</h4>
<p><a href="https://perf.rust-lang.org/detailed-query.html?commit=c553e8e8812c19809e70523064989e66c5cfd3f1&amp;benchmark=inflate-debug&amp;run_name=clean%20incremental" target="_blank" title="https://perf.rust-lang.org/detailed-query.html?commit=c553e8e8812c19809e70523064989e66c5cfd3f1&amp;benchmark=inflate-debug&amp;run_name=clean%20incremental">https://perf.rust-lang.org/detailed-query.html?commit=c553e8e8812c19809e70523064989e66c5cfd3f1&amp;benchmark=inflate-debug&amp;run_name=clean%20incremental</a></p>



<a name="179630996"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179630996" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179630996">(Nov 01 2019 at 14:34)</a>:</h4>
<p>if you search for <code>dep_graph</code> you can see how much time we spend on it</p>



<a name="179631004"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631004" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631004">(Nov 01 2019 at 14:34)</a>:</h4>
<p>i.e. on loading and persisting it</p>



<a name="179631005"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631005" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631005">(Nov 01 2019 at 14:34)</a>:</h4>
<blockquote>
<p>we have runs where literally nothing changes</p>
</blockquote>
<p>yeah but I meant in the not-quite-so trivial cases</p>



<a name="179631011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631011">(Nov 01 2019 at 14:35)</a>:</h4>
<p>e.g. when you change just comments</p>



<a name="179631029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631029">(Nov 01 2019 at 14:35)</a>:</h4>
<p>(vs touching a file)</p>



<a name="179631046"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631046" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631046">(Nov 01 2019 at 14:35)</a>:</h4>
<p>ok, i'm not sure why that number is interesting, but it seems gatherable :)</p>



<a name="179631067"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631067" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631067">(Nov 01 2019 at 14:35)</a>:</h4>
<p>the link above should be the worst case for the current impl</p>



<a name="179631121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631121">(Nov 01 2019 at 14:36)</a>:</h4>
<p>no changes, nothing for LLVM to do</p>



<a name="179631188"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631188" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631188">(Nov 01 2019 at 14:37)</a>:</h4>
<p><span class="user-mention" data-user-id="124287">@mw</span> you mean "run clean incremental" in general, right? Not just for inflate-debug in particular ?</p>



<a name="179631216"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631216" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631216">(Nov 01 2019 at 14:37)</a>:</h4>
<p>"clean incremental" in general</p>



<a name="179631300"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631300" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631300">(Nov 01 2019 at 14:38)</a>:</h4>
<blockquote>
<p>it seems like the biggest wins come from memory usage (e.g., reduction of peak usage by 30% in some cases), but we do see some performance wins too (I saw measurements that suggested max wins of about 5%?)</p>
</blockquote>
<p><span class="user-mention" data-user-id="116466">@Zoxc</span> do you agree with this? did I miss some measurements?</p>



<a name="179631323"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631323" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631323">(Nov 01 2019 at 14:38)</a>:</h4>
<p>(also, other thoughts around goals?)</p>



<a name="179631386"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631386" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631386">(Nov 01 2019 at 14:39)</a>:</h4>
<p>(5% seems like a realistic upper bound at the moment)</p>



<a name="179631387"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631387" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631387">(Nov 01 2019 at 14:39)</a>:</h4>
<p><span class="user-mention" data-user-id="116083">@pnkfelix</span> Yeah</p>



<a name="179631529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631529">(Nov 01 2019 at 14:41)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Seems to be about 4-9%, but there's probably some stuff that can be made faster</p>



<a name="179631613"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631613" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631613">(Nov 01 2019 at 14:42)</a>:</h4>
<p>(what is an example that gets 9%?)</p>



<a name="179631620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631620">(Nov 01 2019 at 14:42)</a>:</h4>
<p>doesn't matter, I can look later</p>



<a name="179631629"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631629" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631629">(Nov 01 2019 at 14:42)</a>:</h4>
<p>shall we discuss GC?</p>



<a name="179631631"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631631" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631631">(Nov 01 2019 at 14:42)</a>:</h4>
<p>I figure I'll just point out unused-warnings-check is a benchmark</p>



<a name="179631632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631632">(Nov 01 2019 at 14:42)</a>:</h4>
<p>regex</p>



<a name="179631633"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631633" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631633">(Nov 01 2019 at 14:42)</a>:</h4>
<p>(we're at 42 minutes)</p>



<a name="179631644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631644">(Nov 01 2019 at 14:42)</a>:</h4>
<p>unused-warnings-check is benchmark where clean incremental currently costs more than clean</p>



<a name="179631682"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631682" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631682">(Nov 01 2019 at 14:43)</a>:</h4>
<p>(and I believe, based on analysis I did some weeks ago, that is solely to due cost of unnecessarily re-writing the dep graph. This work would fix that.)</p>



<a name="179631691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631691">(Nov 01 2019 at 14:43)</a>:</h4>
<p>cool</p>



<a name="179631747"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631747" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631747">(Nov 01 2019 at 14:44)</a>:</h4>
<p><a href="https://perf.rust-lang.org/compare.html?start=eeedd3a6e15d43d0cd3e860f36be737cb2c941ca&amp;end=cfe977fc791e1a9305d2b79e47b448dfa50abb4a" target="_blank" title="https://perf.rust-lang.org/compare.html?start=eeedd3a6e15d43d0cd3e860f36be737cb2c941ca&amp;end=cfe977fc791e1a9305d2b79e47b448dfa50abb4a">may 7 perf results</a></p>



<a name="179631789"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631789" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631789">(Nov 01 2019 at 14:44)</a>:</h4>
<p><a href="/user_uploads/4715/vWAgmYoC5U2ZHC7nhr325Soj/pasted_image.png" target="_blank" title="pasted_image.png">pasted image</a></p>
<div class="message_inline_image"><a href="/user_uploads/4715/vWAgmYoC5U2ZHC7nhr325Soj/pasted_image.png" target="_blank" title="pasted image"><img src="/user_uploads/4715/vWAgmYoC5U2ZHC7nhr325Soj/pasted_image.png"></a></div>



<a name="179631798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631798">(Nov 01 2019 at 14:44)</a>:</h4>
<p>that is CPU clock</p>



<a name="179631801"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631801" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631801">(Nov 01 2019 at 14:44)</a>:</h4>
<p>hmm that does not support my claim</p>



<a name="179631826"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631826" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631826">(Nov 01 2019 at 14:45)</a>:</h4>
<p>keep in mind the default is instructions, which doesn't show parallelism wins -- but still interesting!</p>



<a name="179631839"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631839" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631839">(Nov 01 2019 at 14:45)</a>:</h4>
<p>I'd expect in this case to see wins from instructions?</p>



<a name="179631841"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631841" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631841">(Nov 01 2019 at 14:45)</a>:</h4>
<p>GC reads the dep graph file again, notes down the byte positions of stuff getting overwritten and deleted, and then writes the rest back as raw bytes. So it skips LEB128 encoding, but still needs LEB128 decoding when loading the file.</p>



<a name="179631874"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631874" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631874">(Nov 01 2019 at 14:45)</a>:</h4>
<p>still, I'd really like to spend some time on GC :hint hint:</p>



<a name="179631882"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631882" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631882">(Nov 01 2019 at 14:45)</a>:</h4>
<p>so can we talk about that and come back to the measurements?</p>



<a name="179631946"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631946" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631946">(Nov 01 2019 at 14:46)</a>:</h4>
<p><span class="user-mention" data-user-id="116466">@Zoxc</span> you mentioned early on that that the current PR doesn't do any GC on the dep graph?</p>



<a name="179631981"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631981" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631981">(Nov 01 2019 at 14:46)</a>:</h4>
<p>so the GC as implemented in the PR just removes "actions" from the stream that are later overwritten?</p>



<a name="179631982"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179631982" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179631982">(Nov 01 2019 at 14:46)</a>:</h4>
<p>For context, the need for GC  can arise for two reasons (copying from hackmd):</p>
<ul>
<li>Graph nodes that were overwritten with a new set of dependencies in the latest compilation</li>
<li>Graph nodes that were never used in the latest compilation (e.g., type-checking nodes for functions that were deleted)</li>
</ul>



<a name="179632018"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632018" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632018">(Nov 01 2019 at 14:47)</a>:</h4>
<p>Yes. It just removes stuff that isn't in the graph anymore. It removes the redundant actions from the file. It isn't an operation on the graph itself.</p>



<a name="179632055"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632055" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632055">(Nov 01 2019 at 14:47)</a>:</h4>
<p>it also does not seem to compact the used <code>DepNodeIndex</code> range, right?</p>



<a name="179632057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632057">(Nov 01 2019 at 14:47)</a>:</h4>
<p>It's just an internal detail of the key-value store we encode the dep graph onto</p>



<a name="179632123"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632123" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632123">(Nov 01 2019 at 14:48)</a>:</h4>
<p>It does nothing to dep node indices.</p>



<a name="179632136"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632136" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632136">(Nov 01 2019 at 14:48)</a>:</h4>
<p>I'm wondering where it fits in the "pipeline" --</p>



<a name="179632155"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632155" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632155">(Nov 01 2019 at 14:48)</a>:</h4>
<p>so the in-memory representation of the graph would keep growing</p>



<a name="179632178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632178">(Nov 01 2019 at 14:48)</a>:</h4>
<p>when we start, we read the actions in</p>



<a name="179632182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632182">(Nov 01 2019 at 14:48)</a>:</h4>
<p>and build a graph</p>



<a name="179632186"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632186" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632186">(Nov 01 2019 at 14:48)</a>:</h4>
<p>then we append new actions to the file</p>



<a name="179632200"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632200" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632200">(Nov 01 2019 at 14:49)</a>:</h4>
<p>but sometimes we run the GC and .. overwrite the file so as to prune old actions?</p>



<a name="179632204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632204">(Nov 01 2019 at 14:49)</a>:</h4>
<p>when do we run this GC relative to other things?</p>



<a name="179632212"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632212" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632212">(Nov 01 2019 at 14:49)</a>:</h4>
<blockquote>
<p>so the in-memory representation of the graph would keep growing</p>
</blockquote>
<p>presumably the next compilation will load a "pruned" action list, right?</p>



<a name="179632213"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632213" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632213">(Nov 01 2019 at 14:49)</a>:</h4>
<p>@mw Only if the indices get fragmented, they are reused as in the previous PR</p>



<a name="179632235"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632235" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632235">(Nov 01 2019 at 14:49)</a>:</h4>
<p>ah, yeah, it can keep growing from fragmentation</p>



<a name="179632329"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632329" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632329">(Nov 01 2019 at 14:50)</a>:</h4>
<p>We load the dep graph first. If we notice a lot of garbage we run the GC on dep graph file. All this happens in the background thread and anything incremental in the compiler is blocked on it</p>



<a name="179632407"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632407" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632407">(Nov 01 2019 at 14:51)</a>:</h4>
<p>OK, so the full pipeline is something like:</p>
<ul>
<li>read actions from the file</li>
<li>apply actions to empty graph, building up a new graph</li>
<li>if we see "a lot" of garbage, run the GC and write the data back</li>
<li>else, incremental queries can begin</li>
<li>any new node created during incremental queries is "appended" to the file</li>
</ul>



<a name="179632488"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632488" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632488">(Nov 01 2019 at 14:52)</a>:</h4>
<p>Yeah. This means that right after a GC, rustc will crate more garbage =P</p>



<a name="179632504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632504">(Nov 01 2019 at 14:52)</a>:</h4>
<p>how do we measure the "amount" of garbage?</p>



<a name="179632515"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632515" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632515">(Nov 01 2019 at 14:52)</a>:</h4>
<p>is that "overwritten" actions?</p>



<a name="179632541"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632541" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632541">(Nov 01 2019 at 14:53)</a>:</h4>
<p>Yeah. We record the bytes of overwritten and non-overwritten actions and use a ratio to trigger GC</p>



<a name="179632559"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632559" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632559">(Nov 01 2019 at 14:53)</a>:</h4>
<p>ok. so I don't quite see where "unreachable"  nodes get collected</p>



<a name="179632632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632632">(Nov 01 2019 at 14:54)</a>:</h4>
<p>(I'd be interested in how an alternative approach (that also does DepNodeIndex compaction and graph node GC) does: Still rewrite the whole dep-graph, but "stream" it to disk in the background. That should be doable with minimal changes and might have most of the benefits.)</p>



<a name="179632635"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632635" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632635">(Nov 01 2019 at 14:54)</a>:</h4>
<p>ah hmm</p>



<a name="179632665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632665">(Nov 01 2019 at 14:54)</a>:</h4>
<p>so when nodes are first loaded from the disk, they are "grey" or something, right? and we give them a color if they are used</p>



<a name="179632677"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632677" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632677">(Nov 01 2019 at 14:54)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Those don't relate to the key value store and I'm not sure what you mean by that either</p>



<a name="179632679"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632679" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632679">(Nov 01 2019 at 14:54)</a>:</h4>
<p>so presumably at the end of compilation, we can look at those colors to see nodes that were not relevant</p>



<a name="179632718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632718">(Nov 01 2019 at 14:55)</a>:</h4>
<blockquote>
<p>It just removes stuff that isn't in the graph anymore. It removes the redundant actions from the file. It isn't an operation on the graph itself.</p>
</blockquote>
<p>maybe part of the point <span class="user-mention" data-user-id="116466">@Zoxc</span> 's been saying above</p>



<a name="179632721"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632721" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632721">(Nov 01 2019 at 14:55)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Those nodes are deleted from the dep graph (in the previous PR).</p>



<a name="179632735"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632735" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632735">(Nov 01 2019 at 14:55)</a>:</h4>
<p>in other words, that's an action?</p>



<a name="179632783"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632783" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632783">(Nov 01 2019 at 14:56)</a>:</h4>
<p>that gets added at the end?</p>



<a name="179632806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632806">(Nov 01 2019 at 14:56)</a>:</h4>
<p>i.e., there is some final step that says "if this node never got a color, delete it"?</p>



<a name="179632815"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632815" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632815">(Nov 01 2019 at 14:56)</a>:</h4>
<p>(iterating over all previous nodes)</p>



<a name="179632820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632820">(Nov 01 2019 at 14:56)</a>:</h4>
<p>There is yes.</p>



<a name="179632833"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632833" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632833">(Nov 01 2019 at 14:56)</a>:</h4>
<p>OK, that makes sense. Neat.</p>



<a name="179632896"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632896" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632896">(Nov 01 2019 at 14:57)</a>:</h4>
<blockquote>
<p>(I'd be interested in how an alternative approach (that also does DepNodeIndex compaction and graph node GC) does: Still rewrite the whole dep-graph, but "stream" it to disk in the background. That should be doable with minimal changes and might have most of the benefits.)</p>
</blockquote>
<p>maybe we want .. hmm, ok, 3 minuts :)</p>



<a name="179632910"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632910" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632910">(Nov 01 2019 at 14:57)</a>:</h4>
<p>I was going to say <span class="user-mention" data-user-id="124287">@mw</span> that maybe you could say a bit more what you have in mind :)</p>



<a name="179632963"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632963" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632963">(Nov 01 2019 at 14:58)</a>:</h4>
<p><span class="user-mention" data-user-id="124287">@mw</span> I think we can do something like that if we spot dep node indices fragmentation, but I don't know if that is a problem is practice though.</p>



<a name="179632964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632964">(Nov 01 2019 at 14:58)</a>:</h4>
<p>but maybe we should try to wrap-up and leave that for follow-up?</p>



<a name="179632994"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179632994" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179632994">(Nov 01 2019 at 14:58)</a>:</h4>
<p>But that is a lot of complexity for something we that don't know is a problem</p>



<a name="179633040"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633040" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633040">(Nov 01 2019 at 14:59)</a>:</h4>
<p>yeah, I only would consider it if it <em>really</em> is a small diff to the current implementation</p>



<a name="179633060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633060">(Nov 01 2019 at 14:59)</a>:</h4>
<p>if it would turn out to be complex, I'd rather do something that is append-only</p>



<a name="179633141"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633141" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633141">(Nov 01 2019 at 15:00)</a>:</h4>
<p>so, the is an invalidation action in the stream that takes care of dep-graph GC?</p>



<a name="179633153"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633153" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633153">(Nov 01 2019 at 15:00)</a>:</h4>
<p>OK, well, it's the end of the meeting -- I found this pretty helpful for understanding the PR, at least.</p>



<a name="179633166"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633166" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633166">(Nov 01 2019 at 15:00)</a>:</h4>
<p>I've been trying to take minutes as we went and update the document</p>



<a name="179633202"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633202" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633202">(Nov 01 2019 at 15:01)</a>:</h4>
<p>I'm not 100% sure how we go from here to a <em>final</em> decision</p>



<a name="179633211"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633211" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633211">(Nov 01 2019 at 15:01)</a>:</h4>
<p>There was something totally orthogonal to the topic that I wanted to mention</p>



<a name="179633232"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633232" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633232">(Nov 01 2019 at 15:01)</a>:</h4>
<p>(But I think first step would be to take a moment to digest comments and review code and compare against them)</p>



<a name="179633236"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633236" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633236">(Nov 01 2019 at 15:01)</a>:</h4>
<blockquote>
<p>There was something totally orthogonal to the topic that I wanted to mention</p>
</blockquote>
<p>go for it..</p>



<a name="179633242"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633242" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633242">(Nov 01 2019 at 15:01)</a>:</h4>
<p>I have beta-nom'ed this PR: <a href="https://github.com/rust-lang/rust/issues/66018" target="_blank" title="https://github.com/rust-lang/rust/issues/66018">#66018</a></p>



<a name="179633299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633299">(Nov 01 2019 at 15:02)</a>:</h4>
<p>I think we discussed this in the compiler team meeting yesterday</p>



<a name="179633314"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633314" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633314">(Nov 01 2019 at 15:02)</a>:</h4>
<p>its a revert of the <em>semantic effect</em> of PR <a href="https://github.com/rust-lang/rust/issues/64324" target="_blank" title="https://github.com/rust-lang/rust/issues/64324">#64324</a></p>



<a name="179633327"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633327" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633327">(Nov 01 2019 at 15:02)</a>:</h4>
<p>(I believe)</p>



<a name="179633355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633355">(Nov 01 2019 at 15:02)</a>:</h4>
<blockquote>
<p>I'm not 100% sure how we go from here to a <em>final</em> decision</p>
</blockquote>
<p>I'd like to know more about the fragmentation problem before making a decision. I.e. a risk assessment and possible solutions</p>



<a name="179633383"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633383" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633383">(Nov 01 2019 at 15:03)</a>:</h4>
<p>or really,I should have phrased the beta-nom this way:</p>



<a name="179633389"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633389" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633389">(Nov 01 2019 at 15:03)</a>:</h4>
<p>beta-nom: "Revert PR 64324: dylibs export generics again (for now)" <a href="https://github.com/rust-lang/rust/issues/66018" target="_blank" title="https://github.com/rust-lang/rust/issues/66018">#66018</a></p>



<a name="179633417"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633417" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633417">(Nov 01 2019 at 15:03)</a>:</h4>
<p>(I would personally wait for it to get r+'ed and land in Nightly before doing backport)</p>



<a name="179633519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633519">(Nov 01 2019 at 15:04)</a>:</h4>
<blockquote>
<p>I'd like to know more about the fragmentation problem before making a decision. I.e. a risk assessment and possible solutions</p>
</blockquote>
<p>it seems like a good thing would be to accumulate the things we'd like to investigate further</p>



<a name="179633614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633614">(Nov 01 2019 at 15:05)</a>:</h4>
<p>there is a "open question" at the end of the hackmd</p>



<a name="179633620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633620">(Nov 01 2019 at 15:05)</a>:</h4>
<p>I'll add it there</p>



<a name="179633696"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633696" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633696">(Nov 01 2019 at 15:06)</a>:</h4>
<p>I'll add my Q about whether this resolves the unused-warnings perf oddity</p>



<a name="179633742"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633742" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633742">(Nov 01 2019 at 15:07)</a>:</h4>
<p>heh oh I realize now you meant that you actually edit the doc</p>



<a name="179633744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633744">(Nov 01 2019 at 15:07)</a>:</h4>
<p>go for it:)</p>



<a name="179633748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633748">(Nov 01 2019 at 15:07)</a>:</h4>
<p>though I sort of did so</p>



<a name="179633757"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633757" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633757">(Nov 01 2019 at 15:07)</a>:</h4>
<p>(though I wouldn't block landing this on finding the answer to that)</p>



<a name="179633780"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633780" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633780">(Nov 01 2019 at 15:07)</a>:</h4>
<p>I'd also like <span class="user-mention" data-user-id="124287">@mw</span> to understand a bit better what the alternative design you mention looks like, and if it's really possible in a small diff</p>



<a name="179633836"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633836" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633836">(Nov 01 2019 at 15:08)</a>:</h4>
<blockquote>
<p>though I sort of did so</p>
</blockquote>
<p>does anyone mind if I change the links to point to zulip-archive.rlo ?</p>



<a name="179633865"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633865" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633865">(Nov 01 2019 at 15:08)</a>:</h4>
<p>I sort of do</p>



<a name="179633870"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633870" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633870">(Nov 01 2019 at 15:08)</a>:</h4>
<p>those are significantly more annoying to read</p>



<a name="179633877"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633877" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633877">(Nov 01 2019 at 15:08)</a>:</h4>
<p>I guess I don't <em>really</em> though</p>



<a name="179633878"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633878" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633878">(Nov 01 2019 at 15:08)</a>:</h4>
<p>yeah but you have to login otherwise</p>



<a name="179633883"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633883" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633883">(Nov 01 2019 at 15:08)</a>:</h4>
<p>/me doesn't care</p>



<a name="179633884"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633884" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633884">(Nov 01 2019 at 15:08)</a>:</h4>
<p>so its less open</p>



<a name="179633891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633891">(Nov 01 2019 at 15:08)</a>:</h4>
<p>heh</p>



<a name="179633898"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633898" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633898">(Nov 01 2019 at 15:08)</a>:</h4>
<p>I won't stop you :)</p>



<a name="179633902"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633902" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633902">(Nov 01 2019 at 15:09)</a>:</h4>
<p>don't the zulip-archive posts link over here anyway?</p>



<a name="179633908"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633908" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633908">(Nov 01 2019 at 15:09)</a>:</h4>
<p>so its a "lossless" transformation?</p>



<a name="179633910"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633910" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633910">(Nov 01 2019 at 15:09)</a>:</h4>
<p>I guess that would satisfy my use case :)</p>



<a name="179633924"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633924" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633924">(Nov 01 2019 at 15:09)</a>:</h4>
<p>I'll verify that claim</p>



<a name="179633957"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179633957" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179633957">(Nov 01 2019 at 15:09)</a>:</h4>
<p>(clearly we should just "fix" zulip archive to be more readable...)</p>



<a name="179634021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179634021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179634021">(Nov 01 2019 at 15:10)</a>:</h4>
<p>((the presentation there does lose some stuff, e.g. the emojis))</p>



<a name="179634023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179634023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179634023">(Nov 01 2019 at 15:10)</a>:</h4>
<p>I think they do link back to Zulip, so it's strictly better to use the archive for anything public</p>



<a name="179634081"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179634081" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179634081">(Nov 01 2019 at 15:11)</a>:</h4>
<p>side note, I wonder if we can extend zulip somehow with a feature to make it easy to copy links to the archive</p>



<a name="179634092"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179634092" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179634092">(Nov 01 2019 at 15:11)</a>:</h4>
<p>although I guess applying a regex to the files in the github repo is probably easy enough</p>



<a name="179634297"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179634297" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179634297">(Nov 01 2019 at 15:13)</a>:</h4>
<p>OK, thanks everyone, and especially <span class="user-mention" data-user-id="116466">@Zoxc</span> <span aria-label="heart" class="emoji emoji-2764" role="img" title="heart">:heart:</span></p>



<a name="179634443"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179634443" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179634443">(Nov 01 2019 at 15:15)</a>:</h4>
<p><span class="user-mention" data-user-id="116083">@pnkfelix</span> when you've finished updating URLs, do you want to upload the doc to compiler-team repo?</p>



<a name="179634525"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179634525" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179634525">(Nov 01 2019 at 15:16)</a>:</h4>
<p>okay sure</p>



<a name="179634968"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179634968" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179634968">(Nov 01 2019 at 15:21)</a>:</h4>
<blockquote>
<p>I'd also like <span class="user-mention silent" data-user-id="124287">mw</span> to understand a bit better what the alternative design you mention looks like, and if it's really possible in a small diff</p>
</blockquote>
<p>I've added an outline to the hackmd doc</p>



<a name="179635391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179635391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179635391">(Nov 01 2019 at 15:26)</a>:</h4>
<blockquote>
<p><span class="user-mention silent" data-user-id="116083">pnkfelix</span> when you've finished updating URLs, do you want to upload the doc to compiler-team repo?</p>
</blockquote>
<p>okay posted as <a href="https://github.com/rust-lang/compiler-team/issues/214" target="_blank" title="https://github.com/rust-lang/compiler-team/issues/214">rust-lang/compiler-team#214</a></p>



<a name="179635530"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/design%20meeting%202019-11-01/near/179635530" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/design.20meeting.202019-11-01.html#179635530">(Nov 01 2019 at 15:28)</a>:</h4>
<p>(oh, and, I'm taking the <a href="#narrow/stream/131828-t-compiler/topic/design.20meeting.202019-11-01/near/179633242" title="#narrow/stream/131828-t-compiler/topic/design.20meeting.202019-11-01/near/179633242">above discussion</a> of PR <a href="https://github.com/rust-lang/rust/issues/66018" target="_blank" title="https://github.com/rust-lang/rust/issues/66018">#66018</a> as a approval for beta-backport</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>